/**
 * Copyright (c) 2012 Nokia Corporation.
 */


// Predefined values (optional)
var defs = {
    types : {
        normal : 0,
        satellite : 1,
        terrain : 2,
        hybrid : 3,
        transit : 4,
        grey : 5
    },
    languages : {
        eng : "eng",
        chi : "chi",
        ger : "ger",
        fre : "fre",
        ita : "ita",
        spa : "spa",
        rus : "rus"
    }
};


/**
 * Constructor.
 */
function StaticMap(jsonData)
{
    this.jsonData = jsonData ? jsonData : {};
}


/**
 * Returns Ovi Map URL.
 */
StaticMap.prototype.getUrl = function()
{
    var jsonData = this.jsonData;
    var url = "";

    // Server
    url += jsonData.server ? jsonData.server : "http://m.ovi.me/";
    url+= "?nord";

    // Center coordinates
    if (jsonData.center && jsonData.center.lat && jsonData.center.lon) {
        url += "&c="
                + jsonData.center.lat
                + ","
                + jsonData.center.lon;
    }

    // Radius
    if (jsonData.radius && jsonData.radius.value && jsonData.radius.value != 0) {
        url += "&r="
                + jsonData.radius.value
                // Use unit if available
                + (jsonData.radius.unit ? jsonData.radius.unit : "");
    }
    else {
        // Zoom (ignored if radius is defined)
        if(jsonData.zoom) {
            url += "&z="
                    + ((jsonData.zoom <= 20 && jsonData.zoom > 0) ? jsonData.zoom : 15);
        }
    }

    // Uncertainty
    if (jsonData.uncertainty
        && jsonData.uncertainty.value
        && jsonData.uncertainty.value != 0)
    {
        url += "&u="
            + jsonData.uncertainty.value
            // Use unit if available
            + (jsonData.uncertainty.unit ? jsonData.uncertainty.unit : "");
    }

    // Map type
    if (jsonData.maptype) {
        url += "&t="
                + jsonData.maptype;
    }

    // Width
    if (jsonData.size && jsonData.size.width) {
        url += "&w="
                + jsonData.size.width;
    }

    // Height
    if (jsonData.size && jsonData.size.height) {
        url += "&h="
                + jsonData.size.height;
    }

    // Language
    if (jsonData.language) {
        url += "&ml="
                + jsonData.language;
    }

    // Overlay-options
    if (jsonData.overlays) {
        // Scalebar
        if (jsonData.overlays.scale) {
            url += "&sb=km,mk";
        }

        // Pointer dot
        if (!jsonData.overlays.dot) {
            url += "&nodot";
        }
    }

    return url;
}


/**
 * Returns Ovi Map URL for use in CSS (adds "url" and brackets).
 */
StaticMap.prototype.getCSSUrl = function()
{
    return 'url("' + this.getUrl() + '")';
}


// End of file.
